package com.jiajia.study.io;

import jdk.nashorn.internal.runtime.ECMAException;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.WeakHashMap;

/**
 *
 * IO流对文件进行读写
 *
 * 一、流的分类：
 * 1 操作数据单位：字节流，字符流
 * 2 数据的流向：输入流，输出流
 * 3 流的角色：  节点流，处理流
 *
 *
 * 二、流的体系结构
 * 抽象基类     节点流（文件流）
 *
 *
 * @author : zjj
 * @date : 2021-04-16 10:06
 */
public class FileReadWriteClient {

    public static void main(String[] args) {
        // test();
        //        test2();
        test3();
    }

    /**
     * 文件的读操作
     */
    private static void test(){
        File file = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\resources\\hello.txt");

        FileReader fileReader = null;

        try{
            // 提供具体的流
            fileReader = new FileReader(file);

            int data ;
            while((data = fileReader.read()) != -1){
                System.out.println((char)data);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(fileReader != null){
                try{
                    // 关闭流
                    fileReader.close();
                }catch (Exception e){
                    e.printStackTrace();
                }

            }
        }

    }

    /**
     *
     */
    private static void test2(){
       File file = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\resources\\hello.txt");
        FileReader fileReader = null;
       try{
           fileReader = new FileReader(file);
           // 大小为5个字符的数组，相当于一个缓冲区，每次读五个字符过来
           char[] buffer = new char[5];

           int len;
           while((len = fileReader.read(buffer)) > -1){
               String str =  new String(buffer,0,len);
               System.out.println(str);
           }
       }catch (Exception e){
           e.printStackTrace();
       }finally {
           if(fileReader != null){
               try{
                   fileReader.close();
               }catch (Exception e){
                   e.printStackTrace();
               }
           }
       }
    }

    /**
     * 将文件写入到磁盘中去: 从一个文件写入到另外一个文件中去
     */
    private static void test3(){

        File readFile = new File("D:\\IDEAWorkplace\\java_base_study\\src\\main\\resources\\hello.txt");
        File writeFile = new File("hello2.txt");
        FileReader fileReader = null;
        FileWriter fileWriter = null;
        try{
            fileReader = new FileReader(readFile);
            fileWriter = new FileWriter(writeFile);

            char[] buffer = new char[5];
            int len ;

            while((len = fileReader.read(buffer)) > -1){
                fileWriter.write(buffer,0,len);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(fileReader != null){
                try{
                    fileReader.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }

            if(fileWriter != null){
                try{
                    fileWriter.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }


}
